const debounce=(fn,wait)=>{let t;return(...args)=>{clearTimeout(t),t=setTimeout(()=>fn.apply(this,args),wait)}},setCookie=(name,value,days)=>{var expires="";if(days){var date=new Date;date.setTime(date.getTime()+days*24*60*60*1e3),expires="; expires="+date.toUTCString()}document.cookie=name+"="+(value||"")+expires+"; path=/"},getCookie=name=>{for(var nameEQ=name+"=",ca=document.cookie.split(";"),i=0;i{document.cookie=name+"=; Max-Age=-99999999"},bodyScroll={lock(container){bodyScrollLock.disableBodyScroll(container)},unlock(container){bodyScrollLock.enableBodyScroll(container)},clear(){bodyScrollLock.clearAllBodyScrollLocks()}},getFocusableElements=container=>{const selectors=["summary","a[href]","button:enabled",'[tabindex]:not([tabindex^="-"])',"[draggable]","area","input:not([type=hidden]):enabled","select:enabled","textarea:enabled","object","iframe"];return Array.from(container.querySelectorAll(selectors.join(",")))},trapFocusHandlers={},removeTrapFocus=(elementToFocus=null)=>{document.removeEventListener("focusin",trapFocusHandlers.focusin),document.removeEventListener("focusout",trapFocusHandlers.focusout),document.removeEventListener("keydown",trapFocusHandlers.keydown),elementToFocus&&elementToFocus.focus()},trapFocus=(container,elementToFocus=container)=>{const elements=getFocusableElements(container),first=elements[0],last=elements[elements.length-1];removeTrapFocus(),trapFocusHandlers.focusin=event=>{event.target!==container&&event.target!==last&&event.target!==first||document.addEventListener("keydown",trapFocusHandlers.keydown)},trapFocusHandlers.focusout=function(){document.removeEventListener("keydown",trapFocusHandlers.keydown)},trapFocusHandlers.keydown=function(event){event.code.toUpperCase()==="TAB"&&(event.target===last&&!event.shiftKey&&(event.preventDefault(),first.focus()),(event.target===container||event.target===first)&&event.shiftKey&&(event.preventDefault(),last.focus()))},document.addEventListener("focusout",trapFocusHandlers.focusout),document.addEventListener("focusin",trapFocusHandlers.focusin),elementToFocus.focus()};["load","scroll","resize"].forEach(eventName=>{window.addEventListener(eventName,e=>{document.documentElement.style.setProperty("--viewport-height",`${window.innerHeight}px`)})});const onKeyUpEscape=event=>{if(event.code.toUpperCase()!=="ESCAPE")return;const openDetailsElement=event.target.closest("details[open]");if(!openDetailsElement)return;const summaryElement=openDetailsElement.querySelector("summary");openDetailsElement.removeAttribute("open"),summaryElement.setAttribute("aria-expanded",!1),summaryElement.focus()},serializeForm=form=>{const obj={},formData=new FormData(form);for(const key of formData.keys())obj[key]=formData.get(key);return JSON.stringify(obj)},deepClone=obj=>JSON.parse(JSON.stringify(obj)),handleize=str=>str.replace(/[ /_]/g,"-").toLowerCase(),decode=str=>decodeURIComponent(str).replace(/\+/g," "),getOffsetTop=element=>{let offsetTop=0;do isNaN(element.offsetTop)||(offsetTop+=element.offsetTop);while(element=element.offsetParent);return offsetTop};function pauseAllMedia(){document.querySelectorAll(".js-youtube").forEach(video=>{video.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*")}),document.querySelectorAll(".js-vimeo").forEach(video=>{video.contentWindow.postMessage('{"method":"pause"}',"*")}),document.querySelectorAll("video").forEach(video=>video.pause()),document.querySelectorAll("product-model").forEach(model=>{model.modelViewerUI&&model.modelViewerUI.pause()})}const fetchConfig=(type="json")=>({method:"POST",headers:{"Content-Type":`application/${type}`,Accept:`application/${type}`}});document.querySelectorAll('[id^="Details-"] summary').forEach(summary=>{summary.setAttribute("role","button"),summary.setAttribute("aria-expanded",summary.parentNode.hasAttribute("open")),summary.nextElementSibling.getAttribute("id")&&summary.setAttribute("aria-controls",summary.nextElementSibling.id),summary.addEventListener("click",event=>{event.currentTarget.setAttribute("aria-expanded",!event.currentTarget.closest("details").hasAttribute("open"))}),!summary.closest("header-drawer")&&summary.parentElement.addEventListener("keyup",onKeyUpEscape)});class MenuDrawer extends HTMLElement{constructor(){super(),this.mainDetailsToggle=this.querySelector("details"),this.addEventListener("keyup",this.onKeyUp.bind(this)),this.addEventListener("focusout",this.onFocusOut.bind(this)),this.bindEvents()}bindEvents(){this.querySelectorAll("summary").forEach(summary=>summary.addEventListener("click",this.onSummaryClick.bind(this)))}onKeyUp(event){if(event.code.toUpperCase()!=="ESCAPE")return;const openDetailsElement=event.target.closest("details[open]");openDetailsElement&&(openDetailsElement===this.mainDetailsToggle?this.closeMenuDrawer(this.mainDetailsToggle.querySelector("summary")):this.closeSubmenu(openDetailsElement))}onSummaryClick(event){const summaryElement=event.currentTarget,detailsElement=summaryElement.parentNode,isOpen=detailsElement.hasAttribute("open");function addTrapFocus(){trapFocus(summaryElement.nextElementSibling),summaryElement.nextElementSibling.removeEventListener("transitionend",addTrapFocus)}detailsElement===this.mainDetailsToggle?(isOpen&&event.preventDefault(),isOpen?this.closeMenuDrawer(summaryElement):this.openMenuDrawer(summaryElement)):setTimeout(()=>{detailsElement.classList.add("menu-opening"),summaryElement.setAttribute("aria-expanded",!0),summaryElement.nextElementSibling.addEventListener("transitionend",addTrapFocus)},100)}openMenuDrawer(summaryElement){setTimeout(()=>{this.mainDetailsToggle.classList.add("menu-opening")}),summaryElement.setAttribute("aria-expanded",!0),trapFocus(this.mainDetailsToggle,summaryElement),bodyScroll.lock(summaryElement.nextElementSibling)}closeMenuDrawer(elementToFocus=!1){this.mainDetailsToggle.classList.remove("menu-opening"),this.mainDetailsToggle.querySelectorAll("dropdown-disclosure").forEach(disclosure=>{disclosure?.close(),disclosure.removeAttribute("open"),disclosure.classList.remove("menu-opening")}),this.mainDetailsToggle.querySelectorAll(".submenu-open").forEach(submenu=>{submenu.classList.remove("submenu-open")}),bodyScroll.unlock(this.mainDetailsToggle.querySelector("summary").nextElementSibling),removeTrapFocus(elementToFocus),this.closeAnimation(this.mainDetailsToggle)}onFocusOut(event){setTimeout(()=>{this.mainDetailsToggle.hasAttribute("open")&&!this.mainDetailsToggle.contains(document.activeElement)&&this.closeMenuDrawer()})}onCloseButtonClick(event){const detailsElement=event.currentTarget.closest("details");this.closeSubmenu(detailsElement)}closeSubmenu(detailsElement){const parentMenuElement=detailsElement.closest(".submenu-open");parentMenuElement&&parentMenuElement.classList.remove("submenu-open"),detailsElement.classList.remove("menu-opening"),detailsElement.querySelector("summary").setAttribute("aria-expanded",!1),removeTrapFocus(detailsElement.querySelector("summary")),this.closeAnimation(detailsElement)}closeAnimation(detailsElement){let animationStart;const handleAnimation=time=>{animationStart===void 0&&(animationStart=time),time-animationStart<400?window.requestAnimationFrame(handleAnimation):(detailsElement.removeAttribute("open"),detailsElement.closest("details[open]")&&trapFocus(detailsElement.closest("details[open]"),detailsElement.querySelector("summary")))};window.requestAnimationFrame(handleAnimation)}}customElements.define("menu-drawer",MenuDrawer);const setHeaderPosition=()=>{const header=document.querySelector("#shopify-section-header header, .shopify-section-group-header-group header");header&&document.documentElement.style.setProperty("--header-top-position",`${Number(header?.offsetHeight)+Number(header?.getBoundingClientRect().top)}px`)},debouncedHeaderPosition=debounce(()=>{setHeaderPosition()},50);window.addEventListener("DOMContentLoaded",setHeaderPosition),window.addEventListener("scroll",debouncedHeaderPosition);class HeaderDrawer extends MenuDrawer{constructor(){super(),this.header=this.header||document.querySelector("#shopify-section-header header, .shopify-section-group-header-group header"),this.debouncedResize=debounce(()=>{window.matchMedia(`(min-width: ${this.getAttribute("data-breakpoint")}px)`).matches&&this.closeMenuDrawer()},300),window.addEventListener("resize",this.debouncedResize.bind(this)),this.searchTrigger=document.querySelector('[header-drawer="search-form-open"]'),this.searchTrigger&&this.searchTrigger.addEventListener("click",()=>{this.querySelector("summary")?.click(),setTimeout(()=>{this.querySelector('[type="search"]')?.focus()},300)}),this.querySelectorAll('[data-dropdown-disclosure="close-submenu"]').forEach(button=>{button.addEventListener("click",e=>{const disclosure=e.target.closest("dropdown-disclosure"),summary=disclosure?.querySelector("summary"),details=disclosure?.querySelector("details");e.target.closest("dropdown-disclosure")?.close(e,summary,details)})})}openMenuDrawer(summaryElement){document.documentElement.style.setProperty("--header-top-position",`${parseInt(this.header.offsetHeight)}px`),this.header.classList.add("menu-open"),super.openMenuDrawer(summaryElement)}closeMenuDrawer(elementToFocus){super.closeMenuDrawer(elementToFocus),this.header.classList.remove("menu-open")}}customElements.define("header-drawer",HeaderDrawer);class QuantityInput extends HTMLElement{constructor(){super(),this.input=this.querySelector("input"),this.changeEvent=new Event("change",{bubbles:!0}),this.querySelectorAll("button").forEach(button=>button.addEventListener("click",this.onButtonClick.bind(this)))}onButtonClick(event){event.preventDefault();const previousValue=this.input.value;event.target.name==="increment"?this.input.stepUp():this.input.stepDown(),previousValue!==this.input.value&&this.input.dispatchEvent(this.changeEvent)}}customElements.define("quantity-input",QuantityInput);class ModalOpener extends HTMLElement{constructor(){super();const button=this.querySelector("button");button&&button.addEventListener("click",()=>{const modal=document.querySelector(this.getAttribute("data-modal"));modal&&modal.show(button)})}}customElements.define("modal-opener",ModalOpener);class ModalDialog extends HTMLElement{constructor(){super(),this.predictiveSearch=this.querySelector("predictive-search"),this.dialogHolder=this.querySelector('[role="dialog"]'),this.querySelector('[id^="ModalClose-"]').addEventListener("click",this.hide.bind(this,!1)),this.addEventListener("keyup",event=>{event.code?.toUpperCase()==="ESCAPE"&&this.hide()}),this.addEventListener("click",event=>{event.target===this&&this.hide()})}connectedCallback(){this.moved||(this.moved=!0,document.body.appendChild(this))}show(opener){this.predictiveSearch&&this.predictiveSearch.classList.remove("hidden"),this.openedBy=opener,bodyScroll.lock(this.dialogHolder),this.setAttribute("open",""),trapFocus(this,this.dialogHolder),window.pauseAllMedia(),this.dialogHolder.querySelector('input[type="search"]')&&this.dialogHolder.querySelector('input[type="search"]').focus()}hide(){this.predictiveSearch&&this.predictiveSearch.classList.add("hidden"),bodyScroll.unlock(this.dialogHolder),document.body.dispatchEvent(new CustomEvent("modalClosed")),this.removeAttribute("open"),removeTrapFocus(this.dialogHolder),window.pauseAllMedia()}}customElements.define("modal-dialog",ModalDialog);class DeferredMedia extends HTMLElement{constructor(){super();const poster=this.querySelector('[id^="Deferred-Poster-"]');poster&&poster.addEventListener("click",this.loadContent.bind(this))}loadContent(focus=!0){if(window.pauseAllMedia(),!this.getAttribute("loaded")){const content=document.createElement("div");content.appendChild(this.querySelector("template")?.content.firstElementChild.cloneNode(!0)),this.setAttribute("loaded",!0);const deferredElement=this.appendChild(content.querySelector(".deferred-media__wrapper"));focus&&deferredElement.focus()}}}customElements.define("deferred-media",DeferredMedia);class Cart{static getLiveRegions(){return[{id:"#cart-counter",section:"cart-counter",selector:"#shopify-section-cart-counter"}]}static add(body){if(!body)return;const config=fetchConfig("javascript");return config.headers["X-Requested-With"]="XMLHttpRequest",delete config.headers["Content-Type"],fetch(`${routes.cart_add_url}`,{...config,body})}static update(body){if(body)return fetch(`${routes.cart_change_url}`,{...fetchConfig(),body})}static clear(){return fetch(`${routes.cart_clear_url}`,{...fetchConfig()})}static get(){return fetch(`${routes.cart_url}`,{...fetchConfig()})}}class ProductSelector extends HTMLElement{constructor(){super()}connectedCallback(){this.form=document.querySelector(`form#${this.getAttribute("data-form-id")}`),this.form.addEventListener("submit",this.onSubmitHandler.bind(this)),this.submitButton=this.form.elements.add,this.cartDrawer=document.querySelector("cart-drawer"),this.variants=JSON.parse(this.querySelector('[data-variants-json][type="application/json"]').textContent),this.prices=JSON.parse(this.querySelector("[data-variants-prices]").textContent),this.addEventListener("change",this.onVariantChange.bind(this)),this.unavailableText=` - ${window.variantStrings.unavailable}`,this.priceContainers=[...document.querySelectorAll(`.${this.getAttribute("data-price-id")}`)],this.updateOptions(),this.filterOptions()}onSubmitHandler(event){event.preventDefault(),this.submitButton.classList.add("disabled");const formData=new FormData(this.form);formData.append("sections",this.cartDrawer.getSectionsToRender().map(section=>section.section)),formData.append("sections_url",window.location.pathname),Cart.add(formData).then(response=>response.json()).then(response=>{if(response.status){this.handleErrorMessage(response.description);return}this.cartDrawer.renderContents(response)}).catch(error=>{console.error(error)}).finally(()=>{this.submitButton.classList.remove("disabled")})}handleErrorMessage(errorMessage=!1){const errorWrapper=this.querySelector("[data-error-wrapper]");!errorWrapper||!errorMessage||(window.dispatchEvent(new CustomEvent("formError",{detail:errorMessage})),errorWrapper.classList.toggle("hidden",!errorMessage),typeof errorMessage=="string"&&(errorWrapper.textContent=errorMessage||""))}onVariantChange(event){if(event.target.type!=="number"){if(this.updateOptions(),this.updateVariant(),this.toggleAddButton(!1,""),this.handleErrorMessage(),this.filterOptions(),!this.currentVariant){this.toggleAddButton(!0,""),this.setUnavailable();return}this.currentVariant.available||this.toggleAddButton(!0,window.variantStrings.soldOut),this.updateVariantInput(),this.updatePrice()}}updateOptions(){this.options=Array.from(this.querySelectorAll('input[type="radio"]:checked, select'),el=>({name:el.dataset.name,value:el.value}))}updateVariant(){this.currentVariant=this.variants.find(variant=>!variant.options.map((option,index)=>this.options[index]?.value===option).includes(!1)),this.currentVariantPrice=this.prices.find(priceObj=>priceObj.id===this.currentVariant?.id)}updateVariantInput(){const input=this.form?.elements.id;input&&(input.value=this.currentVariant?.id)}setUnavailable(){this.submitButton&&(this.submitButton.textContent=window.variantStrings.unavailable,this.priceContainers.forEach(container=>container.classList.add("visually-hidden")))}updatePrice(){!this.priceContainers.length||!this.currentVariantPrice?.price_html||this.priceContainers.forEach(container=>{container.classList.remove("visually-hidden"),container.innerHTML=this.currentVariantPrice.price_html})}toggleAddButton(disable,text){const buttonTextWrapper=this.submitButton?.querySelector("span")||this.submitButton;if(this.submitButton){if(disable){this.submitButton.setAttribute("disabled","disabled"),text&&(buttonTextWrapper.textContent=text);return}this.submitButton.removeAttribute("disabled"),buttonTextWrapper.textContent=window.variantStrings.addToCart}}filterOptions(){for(const[key,{name}]of this.options.entries())this.querySelectorAll(`[data-name="${name}"]`).forEach(swatch=>{const selectOptions=swatch.querySelectorAll("option");return selectOptions.length?selectOptions.forEach(option=>{if(this.isOptionAvailable(key,option.value))return option.innerHTML=option.innerHTML.replace(this.unavailableText,"");option.innerHTML.includes(this.unavailableText)||(option.innerHTML=`${option.innerHTML}${this.unavailableText}`)}):swatch.classList.toggle("is-unavailable",!this.isOptionAvailable(key,swatch.value))})}isOptionAvailable(index,value){return this.variants.some(variant=>{if(!variant.available)return!1;const valuesToCheck={},currentHandle=`option${index+1}`;for(let i=0;ivariant[handle]===value2)})}}customElements.define("product-selector",ProductSelector); //# sourceMappingURL=/cdn/shop/t/13/assets/global.js.map?v=19727561209599480441733995483